The present invention relates to integrated circuits and their design.
In recent years, the design of integrated circuit processors has shifted from stand-alone proprietary designs to designs which support greater networking capability and interoperability with competing designs and legacy platforms. This coincides with a realignment of the computing world with network server computers, replacing the traditionally dominant stand-alone PCs.
Accordingly, it is no longer enough to provide a processor having the highest stand-alone performance. The processor must be adept at handling the computing job at hand, which means efficiently responding to processing calls. A processor design that supports calls arriving from a variety of differently designed processors made by different vendors would be superior, as it would offer a greater degree of interoperability. However, among such designs, higher performance would be achieved when the processors in a network, be they large or small, server or client, share common design features, as described in co-pending, commonly owned U.S. patent application Ser. No. 09/815,554, filed Mar. 22, 2001, which is hereby incorporated by reference herein. Such common designs would desirably utilize a common architecture having a common instruction set or subportions thereof, and a common design for data paths and addressing. Such designs would also desirably support high execution rates for jobs that serve and/or process graphics data. Such designs would support interoperability while promoting the high performance benefits of a shared design.
In designing processors for such purpose, an efficient processor organization and design method are needed. A relatively short design cycle should be realized, regardless of the size of the processor, and the size of the computing job that the processor is designed to support. On the other hand, each processor should provide high performance, at a level rivaling that of traditional stand-alone processors. These different goals seem to conflict, according to traditional design methodologies, as will now be described.
Two existing methodologies are provided by the prior art for designing processors: synthetic design, and custom design. These design methodologies find particular application to the design of processor “cores”, i.e., elements of integrated circuits (ICs or “chips”) that provide processor function among other functions provided by such chips. An integrated circuit classified as a system-on-a-chip (“SOC”) has a processor core.
In the synthetic design approach, as illustrated in FIG. 1, a library of reusable component blocks is developed a priori, as shown at S10, the library being available for designing many varieties of circuits for use with a range of clock speeds and purposes. The reusable component blocks are defined by relatively high-level language, for example, a register transport level (“RTL”) description. The designer then assembles the processor design by specifying the component blocks for use therein, as shown at S12. A compiler synthesizes a circuit layout from the component blocks specified in the RTL description. Synthetic design provides flexibility to modify essential features of the processor during the design cycle such as the instruction set, the width of pipelines, and the size of the cache. Such modifications are made by specifying a different set of reusable component blocks in the RTL description, as shown at S14. Synthetic design also allows designs to be created and ready for testing (at a pre-hardware stage) within a relatively short design cycle.
Custom design, on the other hand, is painstaking, requiring a relatively long design cycle. As illustrated in FIG. 2, in a full custom design of a processor, the elements of the processor are designed from the bottom level up, including all functional blocks, as shown at S20. Circuits are handcrafted to specific performance criteria, e.g., to support a minimum clock frequency, to consume less than a certain limit of power, or to occupy less than a certain limit of integrated circuit area. The layout and wiring between functional blocks are also carefully designed to meet the performance criteria, as shown at S22. Because of the greater attention given to each element of the design and the specific emphasis on meeting performance criteria, up to four times greater performance can be achieved when custom designing a processor versus creating the design synthetically. On the other hand, modifications to the custom design pose difficulties, because they require re-designing the processor again from the bottom level up, as shown at S24.